<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1、定义一个函数，求第二十位的斐波那契数是多少
        // var arr=res[i]
        //  arr[0]=1;
        // arr[1]=0;
        //     for(var i=2;i<20;i++){
        //         res[i]=arr[i-1]+arr[i-2];
        //     }

        // console.log(res);


        // function fn(n){
        //     if(n==1||n==2){
        //         return 1;
                
        //     }
        //     return fn(n-1)+fn(n-2)
        // }
        // fn(20)
        // console.log(fn(20));
        
        // function fn(n){
        //     if(n<=2){
        //         return 1;
        //     }
        //     let a=1;b=1,r=0;
        //     for(let i=3;i<=n;i++){
        //         r=a+b;
        //         a=b;
        //         b=r;
        //         console.log("第"+i+"项的值："+r);
        //     }
        //     return r;
        // }
        // console.log(fn(20));

        // function digui(n){
        //     if(n<=2){
        //         return 1;
        //     }
        //     return digui(n-1)+digui(n-2);
        //     return n<=2?1:digui(n-1)+digui(n-2);
        // }
        // console.log(digui(20));
        // 2、定义一个函数，给定一个年份、月份，判断该月多少天
        // function getMothLength(date){
        //     let d=new Date(date);
        //     d.setMonth(d.setMonth()+1);
        //     d.setDate('1');
        //     d.setDate(d.getDate()-1);
        //     return d.getDate();
        // }

        // function fn(date) {
        //     let d = new Date(date);
        //      将日期设置为下月一号
        //     d.setMonth(d.getMonth() + 1);
        //     d.setDate('1');
        //      获取本月最后一天
        //     d.setDate(d.getDate() - 1);
        //     return d.getDate();
        // }
        // fn("2022-12-1");
        // console.log(fn("2022-12-1"));

        // function fn1(year,month){
        //     switch(month){
        //         case 4:
        //         case 6:
        //         case 9:
        //         case 11:
        //             alert("该月还有三十天");
        //             break;
        //         case 2:
        //             (year4==0&&year%100!=0||year%400==0)?alert("闰年，该月有29天"):alert("平年，该月有28天");
        //             break;
        //             default:
        //                 alert("该月有31天");
        //     }
        // }
        // fn1(2001,2)
        // 3、求100-999之间的水仙花数 最后放入一个数组中  水仙花数：是一个三位数，该三位数各位数字立方之和等于该数本身，例如153就是一个水仙花数
        // for(let i=100;i<=999;i++){
        //     var sum=i%10;
        //     var res=parseInt(i%100/10);
        //     var resone=parseInt(i/100);
        //     if(Math.pow(sum,3)+Math.pow(res,3)+Math.pow(resone,3)===i){
        //         console.log(i+"是一个水仙花数");
        //     }
        // }

        // let sxhNum=[];
        // let ge=0,shi=0,bai=0;
        // for(let i=100;i<=999;i++){
        //     ge=i%10;
        //     shi=parseInt((i/10)%10);
        //     bai=parseInt(i/100);
        //     // console.log(bai,shi,ge);
        //     if(ge*ge*ge+shi*shi*shi+bai*bai*bai==i){
        //         sxhNum.push(i);
        //     }
        // }
        // console.log(sxhNum);

        // 4、求现在距离2023年01-01还有多少天
        // let now=new Date();
        // let target=new Date('2023/1/1');
        // let d=target.getTime()-now.getTime();
        // let time2=target-now;
        // d=Maht.floor(d/1000);
        // let day=Math.floor(d/(24*60*60));
        // let hours=d%(24*60*60);
        // hours=Math.floor(hours/3600);
        // let second=time1%(60*60);
        // second=Math.floor(second/60);
        // let second2=d%60;
        // console.log("现在距离2023元旦还有"+day+"天"+hours+"小时"+second+"分钟"+second2+"秒");

        // let time1=new Date("2022-9-21 00:00:00").getTime();
        // let time2=new Date("2023-1-21 00:00:00").getTime();
        // function fn3(nowTime,targetTime){
        //     let timeDifference=targetTime-nowTime;
        //     let surplus=timeDifference/1000/3600/24;
        //     return surplus;
        // }
        // console.log(fn3(time1,time2));

        // window.DateUtils = {
        //     DATE_LENGTH: 1000 * 60 * 60 * 24,
        //     getDis: function () {
        //         var curTime = new Date();
        //         var curYear = curTime.getFullYear();
        //         var newYear = new Date();//2023-01-01 00:00:00
        //         newYear.setFullYear(curYear + 1);
        //         newYear.setMonth(0);
        //         newYear.setDate(1);
        //         newYear.setHours(0);
        //         newYear.setMinutes(0);
        //         newYear.setSeconds(0);
        //         newYear.setMilliseconds(0);
        //         //清空当前时间的日期以后的单位
        //         curTime.setMinutes(0);
        //         curTime.setHours(0);
        //         curTime.setSeconds(0);
        //         curTime.setMilliseconds(0);
        //         return (newYear.getTime() - curTime.getTime()) / this.DATE_LENGTH;
        //     }
        // };
        // // alert("离元旦还有" + DateUtils.getDis() + "天");
        // console.log("离元旦还有" + DateUtils.getDis() + "天");
        // 5、数组a由1～20个数字组成，每个数字为4个，总共80个元素
        // 随机取出15个元素组成新的数组b，编写一个函数对b进行处理，如果b满足每个数字为3个
        // 如：[1,1,1,2,2,2,3,3,3,4,4,4,11,11,11]则返回1，否则返回0
        let a = [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20];
        // let res = Math.floor(Math.random() * 81)

        //     function getDiffGroup(num, min, max) {
        //         var res = [];
        //         for (var i = min; i <= max; i++) res.push(i);
        //         res.sort(function () { return 0.5 - Math.random(); });
        //         var rst = [];
        //         for (var i = 0; i < res.length; i += num) rst.push(res.slice(i, i + num));
        //         return rst;
        //     }
        //     var rst = getDiffGroup(5, 1, 20);
        //     console.log(rst.join('\n'))
        
        // function get(num,min,max){
        //     var res=[];
        //     for(let i = min;i<=max;i++){
        //         res.push(i);
        //     }
        //     res.sort(function(){
        //         return 0.5-Math.random();
        //     })
        //     let rst=[];
        //     for(let i=0;i<res.length;i+=num){
        //         rst.push(res.slice(i,i+num));
        //         return rst;
        //     }
        // }
        // let rst=get(5,1,20);
        // console.log(rst.join('/n'));

    //     function fn4(){
    //         // 解法1
            // let flag;
    //         // let b=[];
    //         // for(let i=0;i<15;i++){
    //         //     let res=Math.floor(Math.random()*80);
    //         //     b.push(a[res]);
    //         // }
    //         let b=[1,1,1,2,2,5,5,5,7,7,7,9,9,9]
    //         console.log(b);
    //         let obj=b.reduce(function(prev,item){
    //             prev[item]=prev[item]+1||1;
    //             return prev;
    //         },{})
    //         console.log(obj);

    //         let temarr=[];
    //         for(let k in obj){
    //             temarr.push(obj[k])
    //         }
    //         console.log(temarr);
    //         flag=temarr.every(function(item){
    //             return item==3;
    //         })
    //         return flag;
    //     }
    //    console.log(fn4());

    // function fn5(){
        // 解法2
        // let b=[1,1,1,2,2,2,5,5,5,7,7,7,9,9,9];
        // let obj=b.reduce(function(prev,item){
        //     prev[item]=prev[item]+1||1;
        //     return prev;
        // },{});
        // let objArr=Object.values(obj);
        // console.log(objArr);
        // flag=objArr.every(function(item){
        //     return item==3;
        // });
        // return flag;

        // 简化
    //     let b=[1,1,1,2,2,2,5,5,5,7,7,7,9,9,9];
    //     let obj=b.reduce(function(prev,item){
    //         prev[item]=prev[item]+1||1;
    //         return prev;
    //     },{});
    //     console.log(obj);
    //     return Object.values(obj).every(function(item){
    //         return item==3;
    //     })
    // }
    // console.log(fn5());
        // 猜数字游戏,生成一个随机数1-10，进入页面定义一个函数让用户输入猜的数字，
        // 如果猜中了就返回猜中了，猜小了就提示猜小了，猜大了也进行提示，用户一共有五次机会；
        
        // function get(min,max){
        //     return Math.floor(Math.random()*(max-min+1))+min;
        // }
        // let random=get(1,10);
        // while(true) {
        //     let num=prompt("请输入你猜测的数字：");
        //     if(num>random){
        //         alert("数字大了");
        //     }else if(num<random){
        //         alert("数字小了");
        //     }else{
        //         alert("你猜对了");
        //         break;
        //     }
        // }

        let randomNum = Math.floor(Math.random() * 10 + 1);
            let flag=false;
            for(let i=0;i<5;i++){
                userNum=prompt("猜数字：");
                fn5(userNum)
                if(flag){
                    break;
                }
            }

        function fn6(userNum){
            if(userNum==randomNum){
                alert("猜对了");
                flag=true;
            }else if(userNum>randomNum){
                alert("猜大了");
            }else{
                alert("猜小了");
                
            }
        }
    </script>
</body>

</html>